// 获取时间
const getTime = (dateTimeStr) => {
  // 拆分传来的日期
  const date = new Date(dateTimeStr)
  // 年
  const year = date.getFullYear()
  // 月
  const month = date.getMonth() + 1
  // 日
  const day = date.getDate()
  // 时
  const hour = date.getHours()
  // 分
  const minute = date.getMinutes()
  const minuteStr = minute < 10 ? '0' + minute : minute.toString()
  // 秒
  const second = date.getSeconds()

  // 获取当前时间
  const now = new Date()
  // 年
  const yearNow = now.getFullYear()
  // 月
  const monthNow = now.getMonth() + 1
  // 日
  const dayNow = now.getDate()
  // 时
  const hourNow = now.getHours()
  // 分
  const minuteNow = now.getMinutes()
  // 秒
  const secondNow = now.getSeconds()

  // 年月日描述
  let dayDesc = ''
  // 时间描述
  let timeDesc = ''
  if (year === yearNow && month === monthNow && day === dayNow) {
    // console.log('今天')
    // 今天
    if (hour === hourNow) {
      // 同一个小时
      if (minute === minuteNow || minuteNow - minute === 1) {
        // 同一分钟或者一分钟内
        timeDesc = '刚刚'
      } else {
        // 多少分钟前
        timeDesc = minuteNow - minute + '分钟前'
      }
    } else {
      if (hour < 7) {
        // 凌晨
        timeDesc = '凌晨'
      } else if (hour < 12) {
        // 上午
        timeDesc = '上午'
      } else {
        // 下午
        timeDesc = '下午'
      }
      timeDesc += hour + ':' + minuteStr
    }
    return timeDesc
  } else if (year === yearNow && month === monthNow && day === dayNow - 1) {
    // console.log('昨天')
    // 昨天
    dayDesc = '昨天'
    if (hour < 7) {
      // 凌晨
      timeDesc = '凌晨'
    } else if (hour < 12) {
      // 上午
      timeDesc = '上午'
    } else {
      // 下午
      timeDesc = '下午'
    }
    timeDesc += hour + ':' + minuteStr
    return dayDesc + ' ' + timeDesc
  } else {
    // 前天以前 显示格式 yyyy年MM月dd日
    dayDesc = year + '年' + month + '月' + day + '日'
    if (hour < 7) {
      // 凌晨
      timeDesc = '凌晨'
    } else if (hour < 12) {
      // 上午
      timeDesc = '上午'
    } else {
      // 下午
      timeDesc = '下午'
    }
    timeDesc += hour + ':' + minuteStr
    return dayDesc + ' ' + timeDesc
  }
}
// // 测试代码
// const time = getTime('2021-09-01 18:02:59')
// // 输出结果
// console.log(time)

// 获取聊天日期时间
export const getChatDateTime = (dateTimeStr) => {
  const date = new Date(dateTimeStr)
  const now = new Date()

  // 年
  let year = date.getFullYear()
  // 月（0~11，最后输出要加1）
  let month = date.getMonth()
  // 日
  let day = date.getDate()
  // 时
  let hour = date.getHours()
  // 分
  let minute = date.getMinutes()

  // 时段：凌晨（00:00~06:59）、上午（07:00~11:59）、下午（12:00~23:59）
  let timeInterval = hour < 7 ? '凌晨' : hour < 12 ? '上午' : '下午'
  // 日期描述
  let dateDesc = `${year}年${month + 1}月${day}日`
  // 时间描述
  let timeDesc = `${timeInterval}${hour}:${minute < 10 ? '0' : ''}${minute}`

  // 特殊情况：如果是今天，则不显示日期描述；如果是昨天，显示日期描述为昨天；否则显示“日期描述 时间描述”。
  // console.log(year, now.getFullYear())
  // console.log(month, now.getMonth())
  // console.log(day, now.getDate())
  if (year === now.getFullYear() && month === now.getMonth() && day === now.getDate()) {
    // 今天 （分为刚刚和几分钟前）
    if (hour === now.getHours()) {
      // 同一小时
      // 差几分钟
      const minuteDiff = now.getMinutes() - minute
      if (minuteDiff <= 1) {
        // 相差一分钟内
        return '刚刚'
      } else if (minuteDiff > 1) {
        // 几分钟前
        return `${minuteDiff}分钟前`
      }
    }
    return timeDesc
  } else if (year === now.getFullYear() && month === now.getMonth() && day === now.getDate() - 1) {
    // 昨天
    return `昨天 ${timeDesc}`
  }

  // 昨天以前
  return `${dateDesc} ${timeDesc}`
}

// // 测试代码
// const result = getChatDateTime('2021-12-02 16:04:00')

// // 输出结果
// console.log(result)
